C++一行字符串处理

有时候编程需要处理一行字符串,包括空格连接起来的一行。直接用cin的话读到空格就会停止。

实用的方法是使用getline函数配个stringstream流操作,简易代码如下。

#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
	string str;
	while(getline(cin,str))
	{
		cout<<endl;
		istringstream get(str);
		string substring;
		while(get>>substring)
		{
			cout<<substring<<endl;
		}
	}

	return 0;
}

 上面的程序中,首先使用getline读取一行字符串,然后使用istringstream get(str)将读取的str与get关联,然后就可以循环的从get中读取数据。非常方便。

参考 C++primer 第五版 P288

时间: 2024-08-01 22:47:18

C++一行字符串处理的相关文章

将控制台输入的每一行字符串,输出至txt文件当中

/** *    需求:将控制台输入的每一行字符串,输出至txt文件当中. /** * 需求:将控制台输入的每一行字符串,输出至txt文件当中. * 思路: * 1.首先想到BufferReader高级流读取一行字符串readLine方法. * 2.但是前提依赖于字符转换流ISR和低级节点流,这里是从控制台输入,节点流自然是System.in.如果是从文件输入,则节点流换成FIS即可 * 3.这样就能建立一条输入流了.BufferedReader(new InputStreamReader(Sy

C++输入一行字符串的一点小结

C++输入一行字符串的一点小结 原文链接: http://www.wutianqi.com/?p=1181 大家在学习C++编程时,一般在输入方面都是使用的cin. 而cin是使用空白(空格,制表符和换行符)来定字符串的界的. 这就导致了对于带有空格的字符串,比如"I Love C++奋斗乐园论坛" 只能读入"I",后面的都无法读入. 这时怎么办?  一.对于字符数组: 方法一:getline() 读入整行数据,它使用回车键输入的换行符来确定输入结尾. 调用方法:

启动程序实现很简单的功能在屏幕中央 ;打印一行字符串(汇编+c+red hat linux实现)

编程:启动程序实现很简单的功能在屏幕中央 ;打印一行字符串(汇编+c+red hat linux实现) 汇编语言编写: boot.asm启动程序代码: ;我们的启动程序实现很简单的功能在屏幕中央 ;打印一行字符串 org 07c00h   ;org指令明确告诉编译器我程序开始地址是07c00h,而不是 ;原来的00000 ;int汇编指令 int 10h mov ax,cs mov es,ax mov bp,msgstr  ;es:bp  ;指向的内容就是我们要显示的 字符串的地址 mov cx

【字符串】统计一行字符串中有多少单词?

注意空格的情况:连续多个空格:一行字符串的尾部有空格. 1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 7 Scanner scanner = new Scanner(System.in); 8 9 while (scanner.hasNextLine()) { 10 11 String input = scanner.nextLine(); 12

输出一行字符串中的单词

#include <stdio.h> #include <stdlib.h> /* 输入一行字符串(单词和若干空格), 输出该行单词(每个单词一行) */ int main(){ char chs[100]; gets(chs); int hasWord = 0; //在之前有单词 for (int i = 0; chs[i] != '\0'; ++i){ if (chs[i] != ' '){ //若不为空格,直接输出 printf("%c", chs[i])

java习题:倒序输出一行字符串

倒序输出一行字符串: public static void main(String[] args) { System.out.println("请输入一行字符串(按Enter执行):"); Scanner input = new Scanner(System.in); String str = input.next(); daoxu(str); } /** * 将字符串倒序 * @param str */ public static void daoxu(String str) { S

使用自定义的行分隔符,从StreamReader中读取一行字符串

在C#中,StreamReader的ReadLine方法是不支持自定义行分隔符的.这导致很多文本文件的行分隔符如果不是"\r"和"\n",那么使用StreamReader就无法正确读取到一行字符串. 所以我们这里采用一个.NET Core控制台项目,自定义一个ReadLineWithDelimiter扩展方法,演示使用自定义的行分隔符,从StreamReader中读取一行字符串,代码如下: using System; using System.IO; using S

C++每次读取一行字符串输入(学习笔记) (转)

1. 面向行的输入:getline()getline()函数读取整行,它使用通过回车键输入的换行符来确定输入结尾. cin.getline(Arr, 20) // Arr为用来输入行的数组的名称:                      //20包括19个字符和1个空字符 2. 面向行的输入:get()与getline()的工作方式类似,接受参数相同,但get()并不再读取并丢弃换行符,而是将其留在输入队列中.可如下使用: cin.get(Arr1, ArSize); // 读第一行cin.g

转:C++输入一行字符串的一点小结

原文链接: http://www.wutianqi.com/?p=1181 大家在学习C++编程时,一般在输入方面都是使用的cin.而cin是使用空白(空格,制表符和换行符)来定字符串的界的.这就导致了对于带有空格的字符串,比如”I Love C++奋斗乐园论坛”只能读入”I”,后面的都无法读入.这时怎么办?  一.对于字符数组:方法一:getline()读入整行数据,它使用回车键输入的换行符来确定输入结尾.调用方法: cin.getline(str, len);第一个参数str是用来存储输入行