gpt4 book ai didi

c++ - 标记字符串以存储值的好方法?或替代用户输入

转载 作者:行者123 更新时间:2023-11-28 08:05:49 25 4
gpt4 key购买 nike

你好 Stackoverflow,我又来问我的 C++ 编程课的问题了。我面临的问题主要是由于键盘的用户输入。我需要能够根据用户输入来决定调用什么函数以及为该函数提供什么参数。例如 add 5 会用参数 5 调用 add 函数。起初我尝试重载 >> 运算符以同时获取字符串和 int 但我遇到的问题是程序是如果没有 deletemax 之类的 int 就无法进行输入,所以我不得不放弃这个想法。所以现在我回到对输入进行标记化,但是我们不允许在这个程序中使用 Boost,所以我使用 sstream 想出了类似的东西

    bool out = false;
string token;
string In;
int num;

do
{
cout << "heap> ";
cin >> In;
istringstream iss(In);
while(getline(iss, token, ' '))
{
cout << token << endl; //I know this is incorrect but just not what to replace it with
}
out = ProcessCommand (token, num); //Takes string and int to call correct functions
} while (out != true);

问题在于我不太确定如何正确标记字符串以便我可以获得 2 个字符串并将第二个字符串转换为 int。谁能给我一些帮助?我将不胜感激。此外,如果有比我正在尝试的更好的方法来解决这个问题,我也很想听听。

感谢您能给我的任何帮助。

最佳答案

谷歌搜索“C++ string tokenize”会给你带来很多点击,第一个点击是在 Stackoverflow 上。但是你应该尝试一下。我猜这就是练习的重点。

您说的是“argumentS”,这表明您支持的命令采用不同数量的参数。我会这样分解它:

  1. 从用户那里读出一行
  2. 在空间边界上将行拆分为“ token ”,将 token 存储在列表中
  3. 根据列表中的第一个标记,选择要执行的命令
  4. 将标记列表传递给命令,以便它可以将它们验证/解释为参数

棘手的部分是#2。你知道容器类吗?您可以使用 vector<string>存储您解析的 block 。要进行实际的解析,您需要遍历字符串的字符。跳过空格,直到找到非空格字符(或字符用完)。保存此位置:start .然后跳过非空白,直到找到空白(或用完字符)。保存此位置:end .复制 start 之间表示的子字符串至 end并将其复制到您的 token 列表。

如果您以前从未做过,那么要弄清楚这方面的实际细节,确保您没有错误等,这将是一项挑战,我猜这就是重点.

关于c++ - 标记字符串以存储值的好方法?或替代用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10321563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com