istream的&安培; getline(istream& is,string& str);可以用于'\ n'的数据?

时间:2013-08-23 05:38:49

标签: c++

istream& getline (istream& is, string& str);这里str在换行符之后终止。但是,如果我想处理strote cotents 2-3行的情况,那么还有什么选择呢?

2 个答案:

答案 0 :(得分:2)

您可以发出消息告诉用户终止输入,例如

std::cout<<"Enter your message (enter finish. to terminate input)"<<endl;
while (mess != "finish.")
{
   std::getline(std::cin, mess);
   input_message += mess;

}

希望这会有所帮助,因为它更具动态性

答案 1 :(得分:1)

我觉得我们可以使用一些示例输入,但是这段代码会读取来自std::cin的行,直到它找不到更多行,并将所有这些行保存到std::vector。< / p>

#include <iostream>
#include <vector>

int main() {
    std::string line;
    std::vector<std::string> lines;

    while (std::getline(std::cin, line)) {    // iterates until exhaustion
        lines.push_back(line);
    }
    // lines[k] can be used to fetch the k'th line read, starting from index 0

    // Simply repeat the lines back, prepended with a "-->"
    for (auto line : lines) {
        std::cout << "--> " << line << '\n';
    }
}

例如,如果我输入

cat
bat
dog

我的节目输出

--> cat
--> bat
--> dog