如何在字符串中选择部分句子(C++)
Posted
技术标签:
【中文标题】如何在字符串中选择部分句子(C++)【英文标题】:How to select parts of sentences in strings (C++) 【发布时间】:2018-04-15 16:56:17 【问题描述】:我正在制作一个命令行程序,我想知道如何获取句子的不同部分,所以假设有人输入 cd Windows/Cursors
,它会检测(使用 if 语句)他们输入了 cd
,然后(在同一个 if 语句中)它将选择句子的其余部分,并将其设置为目录。这是我的代码:
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
int main()
while (1)
string directory = "C:/";
string promptInput;
string afterPrint;
string prompt = "| " + directory + " |> ";
cout << prompt;
cin >> promptInput;
if (promptInput == "")
else if (promptInput == "h:/")
directory = "H:/";
if (promptInput != "")
cout << " " << afterPrint << "\n";
return 0;
我还没有尝试过任何东西,所以我愿意接受建议。
我们将不胜感激。
-迦勒辛
【问题讨论】:
不相关:如果您使用的是 Visual Studio,并且#include "stdafx.h"
建议这样做,请将 #include "stdafx.h"
放在文件的第一部分。上面的所有内容都将被忽略。更多信息:***.com/questions/2976035/purpose-of-stdafx-h。为什么人们忍受这个蓝精灵:***.com/questions/4726155/…
【参考方案1】:
您可以使用std::stringstream
读取每一行并将其转换为流。然后将行分成单独的部分,根据行中的第一个单词创建一个响应。例如:
#include <sstream>
...
int main()
string line;
while(getline(cin, line))
stringstream ss(line);
string cmd;
if(ss >> cmd)
if(cmd == "cd")
string dir;
if(ss >> dir)
cout << "changedir: " << dir << "\n";
else if(cmd == "c:" || cmd == "c:\\")
cout << "changedir: " << cmd << "\n";
else
cout << "error\n";
return 0;
【讨论】:
【参考方案2】:通用答案取决于您的问题集,但您的示例的具体答案可能如下所示:
else if (promptInput == "cd")
std::string directory;
std::getline(std::cin, directory);
ChangeDirectory(directory);
【讨论】:
以上是关于如何在字符串中选择部分句子(C++)的主要内容,如果未能解决你的问题,请参考以下文章