【问题标题】:I want to read commands from a text file我想从文本文件中读取命令
【发布时间】:2016-12-03 18:26:23
【问题描述】:

我想为我的邻接列表图读取命令。

5
ADD 0 1
ADD 1 2
ADD 2 3
ADD 3 1
ADD 2 0
LIST 2
DFS 2
BFS 2
REMOVE 1 

我不明白如何从文件中读取此内容并将相应的函数调用为 addEdge(0,1) 用于 ADD 0 1 和所有其他函数。

我尝试使用getline(),但我不明白如何从字符串中获取数字。

是否有任何方法可以从文件中读取,例如文件只有 ADD 命令我们可以使用while(file >> str >> num1 >> num2)

【问题讨论】:

  • 使用std::istringstream 进一步解析行。
  • 我无法使用 sstream。
  • 您能否详细说明无法使用<sstream> 标头(我假设)?是学校练习还是类似的练习,你被人为限制?还有哪些其他限制?
  • @Someprogrammerdude 像往常一样,没有 C++ 库头文件,只有 C 函数,没有方便的 std::vectorstd::string 等。哦,我最喜欢的“C++”类。
  • 您没有进行任何研究。这几乎每天都会被问到,这意味着有 百万 个关于该主题的现有问题。下一部分不是你的错,但是:我对这种情况已经完全没有耐心了。

标签: c++ string list file fstream


【解决方案1】:

没有任何方法可以从文件中读取,就像文件只有我们可以使用的 ADD 命令一样

while(file >> str >> num1 >> num2)

你可以使用一些类似的代码

 std::string command;
 while(file >> command) {
     if(command == "ADD") {
         int num1, num2;
         if(!(file >> num1 >> num2) {
             std::err << "Unexpected input error" << std::endl;
         }
         else {
             addEdge(num1,num2);
         }
     else if(command == "LIST")
         int num1;
         if(!(file >> num1) {
             std::err << "Unexpected input error" << std::endl;
         }
         else {
             list(num1);
         }
     }
     else if(command == "DFS") {
        // etc.
     }
     // etc.
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    相关资源
    最近更新 更多