C++ 如何读取带空格的字符串,直到'\r';?

C++ 如何读取带空格的字符串,直到'\r';?,c++,C++,我想读取一个长字符串,并将其拆分为较小的字符串,其中大字符串的每一行都是较小字符串的条目。但是,我只希望它在“\r”处中断,而不是在空格处中断。 这是我现在所做工作的示例代码: std::vector<std::string> m_list; std::ifstream input("data.txt"); std::string str; std::getline(input, str); std::istringstream iss(str); std::st

我想读取一个长字符串,并将其拆分为较小的字符串,其中大字符串的每一行都是较小字符串的条目。但是,我只希望它在“\r”处中断,而不是在空格处中断。 这是我现在所做工作的示例代码:

std::vector<std::string> m_list;
std::ifstream input("data.txt");
std::string str;
std::getline(input, str);
std::istringstream iss(str);
std::string temp;
while (iss >> temp)
{
    m_list.push_back(temp);
}
std::向量m_列表;
std::ifstream输入(“data.txt”);
std::字符串str;
std::getline(输入,str);
标准:istringstream iss(str);
std::字符串温度;
而(iss>>温度)
{
m_列表。推回(临时);
}

但是,这段代码在遇到空格时也会打断字符串。

如果确实在正确的路径上,您实际上只需要跳过直接字符串流操作。这应该很好:

    std::vector<std::string> m_list;
    std::ifstream input("data.txt");
    std::string str;        
    
    while (std::getline(input, str, '\r'))
    {
        m_list.push_back(str);
    }
std::向量m_列表;
std::ifstream输入(“data.txt”);
std::字符串str;
while(std::getline(输入,str,'\r'))
{
m_列表。推回(str);
}

std::getline
似乎在菜单上。然而,一个实际的输入和预期输出的例子比试图描述它更能说明问题。当你说“
”/r“
时,你是指斜杠和“r”(两个字符)的实际值,还是指回车符?不管怎样,
std::getline
仍然可以用来分解除换行以外的字符串。我还在学习编程。我怀疑我可以为getline的参数添加一些东西,但我不知道它们应该是什么。这就是为什么我要问这个问题。我检查了多个其他线程,但找不到问题的确切答案。啊,该死,我是说新行中的
'\r'
。你几乎不应该处理
'\r'
。文本模式流自动将平台的换行符序列转换为
'\n'
。(而且没有一个现代平台会将
'\r'
本身用于换行序列。)正如我所说,我还在学习编程。有很多事情我都不知道。我在谷歌上搜索了“char for a new line”或类似的内容,它告诉我这是
'\r'
。这不会在新行
'\r'
时中断。它只是把整件事一股脑地放在一根绳子上。好的,编辑之后,它工作了!