如何在字符串中选择部分句子(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++)的主要内容,如果未能解决你的问题,请参考以下文章

C ++我不知道如何在字符串(句子)中找到一个单词(例如香蕉,三明治)用户输入句子然后写出那个单词

如何编写代码来自动完成单词和句子?

创建一个简单的 C++ 字符串类

如何使我的句子的一部分左对齐并保持右对齐

在一个句子中找到一个单词 c++

如何颠倒整个句子的大小写?