测试字符串中的空格字符......?

Chr*_*ian 1 c++ string space

我正在尝试测试一个字符串中的字符是否是一个空格,我变得非常沮丧:

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)

我没有收到任何错误,我已经在网上看了,但不同论坛上的人都说这是如何测试空间的.呃.

wil*_*ell 8

当你说

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)

将所有内容都添加到字符串中的文件结束标记.


Pep*_*epe 5

那是因为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)