C++;:为什么读取时空格总是以字符串结尾? 使用类型 STD::String 接受一个句子,用于练习(我没有用C++中的字符串处理),我检查字符是否是元音。我明白了: for(i = 0; i <= analyse.length(); i++) { if(analyse[i] == 'a' || analyse[i] == 'e' [..etc..]) { ...vowels++; } else { ... ...consonants++; }
我无法从您粘贴的代码中分辨出来,但我将冒险猜测您正在使用流提取操作符(stream>>string)读取字符串 流提取操作符遇到空白时停止 如果不是这样,你能告诉我们你是如何填充你的字符串的,它的内容是什么吗 如果我是对的,那么您将需要一种不同的方法将内容读入字符串。std::getline()可能是读取文件的最简单方法。它停在换行符而不是空格处C++;:为什么读取时空格总是以字符串结尾? 使用类型 STD::String 接受一个句子,用于练习(我没有用C++中的字符串处理),我检查字符是否是元音。我明白了: for(i = 0; i <= analyse.length(); i++) { if(analyse[i] == 'a' || analyse[i] == 'e' [..etc..]) { ...vowels++; } else { ... ...consonants++; },c++,string,std,C++,String,Std,我无法从您粘贴的代码中分辨出来,但我将冒险猜测您正在使用流提取操作符(stream>>string)读取字符串 流提取操作符遇到空白时停止 如果不是这样,你能告诉我们你是如何填充你的字符串的,它的内容是什么吗 如果我是对的,那么您将需要一种不同的方法将内容读入字符串。std::getline()可能是读取文件的最简单方法。它停在换行符而不是空格处 根据已编辑的问题进行编辑: 使用此选项(仔细检查语法。我不在编译器前面): 当您按“回车”键时,应该停止读取。如果您想读取整行内容(包括空格),则应
根据已编辑的问题进行编辑: 使用此选项(仔细检查语法。我不在编译器前面):
当您按“回车”键时,应该停止读取。如果您想读取整行内容(包括空格),则应使用getline进行读取。示意图如下所示:
#include <string>
istream& std::getline( istream& is, string& s );
string s;
getline( cin, s );
cout << "You entered " << s << endl;
#包括
istream&std::getline(istream&is,string&s);
要阅读整行文字,请执行以下操作:
#include <string>
istream& std::getline( istream& is, string& s );
string s;
getline( cin, s );
cout << "You entered " << s << endl;
字符串s;
getline(cin,s),;
cout我猜你是在用your\u-stream>>your\u-string代码>。字符串的运算符>
被定义为与scanf
的%s
转换工作(大约)相同,该转换一直读到遇到空格为止——因此,运算符>>
执行相同的操作
您可以使用std::getline
读取整行输入。您可能还想看看我在前面的问题上发布的一个问题(提供了一些替代std::getline
)。istream上的>
操作符将字符串分隔在空白处。如果您想得到一整行,可以使用readline(cin,destination\u string)
它不是std::string,它可以容纳任何字符,包括空格和空字符。显示如何读取字符串。如何设置分析?如果你站在一边,你会得到什么。。将长度存储在变量中(const int ci=analysis.length();)for中的函数是错误的做法。getline工作正常。很高兴这不是什么随机问题,帮助我学习。谢谢你的答案链接,+1你想要的是getline
,而不是readline
?虽然有些库包含名为readline
的函数,但它不是标准库的一部分。(其他语言使用readline,这就是我感到困惑的原因。)