我正在尝试测试一个字符串中的字符是否是一个空格,我变得非常沮丧:
string my_string;
cin >> my_string;
for (int i = 0; i < my_string.length(); i++)
{
if (my_string[i] == ' ') // this never becomes true...
{
cout << "this text should pop, but never does" << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误,我已经在网上看了,但不同论坛上的人都说这是如何测试空间的.呃.
当你说
cin >> my_string;
Run Code Online (Sandbox Code Playgroud)
你正在采取格式化输入.std::cin丢弃该行中的任何空格,并且它只读取并生成一个单词.
试着改为
std::string my_string;
std::getline(std::cin, my_string);
Run Code Online (Sandbox Code Playgroud)
得到一条线,或
#include <iterator>
// ...
std::string my_string((std::istreambuf_iterator<char>(std::cin)),
std::istreambuf_iterator<char>());
Run Code Online (Sandbox Code Playgroud)
将所有内容都添加到字符串中的文件结束标记.
那是因为cin在第一个空格处停止阅读,所以你从来没有真正读过整个句子而是第一个单词.请改用getline.
std::string my_string;
std::getline(std::cin, my_string);
for (int i = 0; i < my_string.length(); i++)
{
if (my_string[i] == ' ') // this never becomes true...
{
std::cout << "this text should pop, but never does" << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
312 次 |
| 最近记录: |