【问题标题】:terminate while loop using character使用字符终止while循环
【发布时间】:2020-10-27 21:16:31
【问题描述】:

我需要以下 sn-p 方面的帮助:

使用string in,以下循环终止:

int main() {
string in;
while(1){
    cin >> in;
    if (in == "|")
        break;
}

但是使用int in,下面的循环不会终止:

int main() {
int in;
while(1){
    cin >> in;
    if (in == '|')
        break;
    else 
        cout<< in << "\n";
}

我想终止最后显示的 sn-p。是否可以使用int in。 我看过帖子C++ Terminate loop using a char input to int,但没有解决办法。

【问题讨论】:

    标签: c++ c++11


    【解决方案1】:

    虽然字符在计算机中以小整数表示,但intchar 不同。不在 C++ 中。

    当您读入int 变量时,&gt;&gt; 运算符会尝试将输入解析为整数,将其解析为数字而非字符。

    如果你想读一个字符然后一个字符:

    char in;
    std::cin >> in;
    

    如果你尝试读取一个整数,而输入的不是数字,那么输入操作符将会失败。参见例如this very simple example.

    【讨论】:

    • 可以,但是你能告诉我在使用int in时终止它的方法吗?
    • @DeepChandra 但是您不能使用int 变量来使用格式化的&gt;&gt; 运算符读取单个字符。这根本不可能。然后您需要使用两个变量:一个char 变量用于读取字符,另一个int 变量分配给char 变量的值。或者使用未格式化的 std::istream::read 函数(根据平台,它可能无法完全按照您的预期工作)。
    【解决方案2】:

    这是我使用的方法

    我需要无限期地使用 while 循环将整数输入到向量作为输入,并使用字符终止它。 这种方法将输入作为字符,然后将此字符转换为整数。

    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main()
    {
        char in;
        std::vector<int> vec;
        while(1){
            cin>>in;
            if(in == '|'){
                break;
            }
            vec.push_back(in - '0');
        }
        
        for(int j=0; j<vec.size(); j++){
        cout<<vec[j];}
        
        return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-18
      • 2016-01-15
      • 2017-03-10
      • 2017-02-09
      • 1970-01-01
      相关资源
      最近更新 更多