This question already has answers here:
Read file line by line using ifstream in C++

(8个答案)


15天前关闭。




这是问题。
我需要从文件中读取一些名称,例如:
James Brown /n
Peter Lee /n
Chris Wu /n
Steven Huang /n
Kelly Yang /n
首先,我需要知道输入流中最长的名称有多长时间,然后需要创建一个动态的二维char数组。最后,将名称放入动态数组中。(在这种情况下,我需要创建5 * 12数组,因为“Steven Huang”中有12个字母。)
如何读取输入流以知道数字'12',但不提取它们以使用C++中的cin>>将其放入数组中?
所有建议将不胜感激。

最佳答案

我猜最简单的答案是只使用cin找出单个字符。尽管这不是一种有效的语言,但您似乎对学习基本语言更感兴趣,因此它可能有助于您遵循自己的思路。

char c;
std::string s;
std::vector<std::string> vector_of_strings;
while(cin >> c)
{
  s = s + c;
  if ( c == '\n')
  {
    vector_of_strings.emplace_back(s);
    s = "";
  }
}
那么您就可以遍历vector_of_strings,检查每个长度并进行后期处理。
去那里的另一种方法是尝试std::getline
#include <sstream>
std::string line;
std::vector<std::string> vector_of_strings;
std::getline(std::cin, line);
while(line.length() > 0) //stop when user enters empty line
{
    std::getline(std::cin, line);
    vector_of_strings.emplace_back(line);
}
然后再进行一些后处理

关于c++ - 如何读取输入流,但不提取c++中的输入流? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64226333/

10-11 10:51