C:为什么空格总是在读取时终止字符串?

使用类型std :: string接受一个句子,为了练习(我没有在C中使用字符串)我正在检查一个字符是否是一个元音.我懂了:
for(i = 0; i <= analyse.length(); i++) {
if(analyse[i] == 'a' || analyse[i] == 'e' [..etc..]) {
 ...vowels++;    
} else { ...
 ...consonants++;
}

如果字符串是一个单词,这可以正常工作,但第二个我添加一个空格(IE:aeio aatest)它只计算第一个块并将空间计为辅音,并退出读取句子(退出for循环或东西).

空格是否计为无字符== null?或者std :: string有些奇怪?知道为什么会发生这种情况会很有帮助!

编辑:
我只是通过std :: cin接受字符串,例如:

std::string analyse = "";
std::cin >> analyse;

解决方法

我猜你正在阅读你的字符串,例如your_stream>> your_string ;.操作符>> for strings被定义为与scanf的%s转换相同(大约),它会在遇到空格时读取 – 因此,运算符>>做同样的事.

您可以使用std :: getline读取整行输入.您可能还想查看我发布到上一个问题的answer(提供了一些替代std :: getline).

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...