【问题标题】:How to assign variables from colon-separated text file c++如何从以冒号分隔的文本文件 C++ 分配变量
【发布时间】:2021-08-19 22:03:18
【问题描述】:

我有一个 .txt 文件:

A:One:1:2:15.
B:Two:0:6:5.
C:Three:0:4:6.
D:Four:0:4:8.
E:Five:0:6:2.

我需要读取文件,并将 (:) 之间的每个值分配给适当的变量。

到目前为止,这是我的代码:

int main()
{
ifstream theFile("Parts.txt");

if(theFile.is_open())
{
    string line;
    while(getline(theFile, line))
    {
        stringstream ss(line);

        string code;
        string partName;
        int minimum;
        int maximum;
        int complexity;

        getline(ss, code, ':');
        getline(ss, partName, ':');
        getline(ss, minimum, ':');
        getline(ss, maximum, ':');
        getline(ss, complexity, ':');
        cout << code << partName << minimum << maximum << complexity << "\n";
    }
}


return 0;
}

这是我得到的错误:

a1.cpp:27:13: error: no matching function for call to 'getline'
        getline(ss, minimum, ':');

a1.cpp:28:13: error: no matching function for call to 'getline'
        getline(ss, maximum, ':');

a1.cpp:29:13: error: no matching function for call to 'getline'
        getline(ss, complexity, ':');

我对 c++ 很陌生,因此非常感谢任何帮助!

【问题讨论】:

  • 在互联网上搜索“C++ 读取文件冒号分隔值”或“C++ 读取文件 CSV”。 StackOverflow 和互联网上都有大量此类问题。
  • 查看std::getline 的声明。注意codepartName 是字符串,但minimummaximumcomplexity 不是字符串;然而这些正是编译器所抱怨的。
  • 您可以使用char colon;,然后在阅读partName 后使用ss &gt;&gt; minimum &gt;&gt; colon;
  • string minimum_str; getline(ss, minimum_str, ':'); minimum = stoi(minimum_str);

标签: c++ filestream


【解决方案1】:
getline(ss, minimum, ':');

std::getline 的第二个参数始终是std::stringminimum 不是 std::string。这是一个int,这就是编译失败的原因。在 C++ 中调用函数时,所有参数类型必须正确,或可转换(隐式或通过用户指定的转换运算符)为函数期望的参数类型。

您还需要将这个词提取到std::string,然后使用std::stoi library functionstd::string 转换为integer。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多