【问题标题】:Defining and inputing an array of strings with whitespaces in C++在 C++ 中定义和输入带有空格的字符串数组
【发布时间】:2017-09-22 08:04:11
【问题描述】:

必须定义一个字符串数组并将其作为输入,以便在 C++ 的输入中查找某些特定字符。我已获得最大行数n 和每行最大字符数c

string lines[n];
for (int i=0; i<2000; i++) 
   cin.get(lines[i],c);

此代码不起作用,因为cin.get() 的参数不匹配。

【问题讨论】:

  • 如何使用std::getline() 看看documentation,您可能会了解cin.get() 的作用。
  • getline() 给出同样的错误
  • 我应该不使用字符串库并使用字符数组。
  • 您应该更喜欢 std::string 而不是字符数组。
  • @RohanSharma std::getline(std::cin,lines[i]); 应该可以正常工作。如前所述,请阅读您使用的函数的文档。

标签: c++ arrays string debugging


【解决方案1】:

因此将其定义为字符数组是可行的。

char lines[n][c]={'\0'};
for (int i=0; i<n; i++) 
    cin.getline(lines[i],c);

for(int i=0; i<n && lines[i]; i++) {
    for(int j=0; j<c && lines[i][j]; j++)
        cout << lines[i][j];
    cout << endl;
}    

【讨论】:

  • cin.getline(lines[i],c); 你应该更彻底地阅读我的评论。 cin.getline()std::getline() 不同。不,你不应该使用char 数组,而是std::string
【解决方案2】:

您没有提供maximum number of lines n and maximum number of characters in each line c

指令lines[n] 简单地声明了一个大小为nchar 数组。然后在循环中,您从 std::in 中仅存储您使用 std::cin 提供的 1 字符,因为 lines[i] 只能存储 1 char (这是它的定义)。

解决方案如下:

std::string lines[n];
for (int i = 0; i < n; i++)
{
    std::getline(std::cin, lines[i]);

    if (lines[i].size() > c)
       lines[i].resize(c); // to read only c characters
}

【讨论】:

    猜你喜欢
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2016-02-23
    • 2023-01-29
    • 2018-10-15
    • 2014-03-25
    • 1970-01-01
    相关资源
    最近更新 更多