如果cin包含字符串前的整数,则打印错误

时间:2015-02-01 19:42:30

标签: c++ string loops while-loop cin

我正在编写一个程序,用户可以输入他们想要的任何字符串,除非他们在字符串之前输入一个整数,否则它将是有效的。 例如:

input: hi
output: hi is valid
input: 1hi
output: 1hi is invalid. It starts with a number

这是我到目前为止所得到的,但是如果我输入“hi”并且“1hi有效”,如果我输入1hi,它会继续打印“hi is valid”。

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

string input;
int main()
{
    while (input != "quit")
    {
        cin >> input;

        if (input == "1" + input)
            cout << input << "in not valid. Reason: Started with a number.";

        cout << input << " is valid.\n";
    }
    return 0;
}

感谢任何帮助。


答案已经解决。 使用isdigit作为解决问题的方法。

2 个答案:

答案 0 :(得分:1)

那样的东西? :

if (input[0] >= 48 && input[0] <= 57) {
    std::cout << input << " is not valid";
}

通过查看ASCII表,我认为这样可行。

编辑 - (input == "1" + input)永远不会成真。

答案 1 :(得分:0)

您可以使用isdigit:

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

string input;
int main()
{
    while (input != "quit")
    {
        cin >> input;

        if (isdigit(input.at(0)))
            cout << input << "in not valid. Reason: Started with a number.";
        else
            cout << input << " is valid.\n";
    }
    return 0;
}