如何在 isaplha 中将 *argv[] 变成一个字符串
How to turn *argv[] into a string inside isaplha
C++ 编程新手,在参数为字母时使用 isaplha 识别和显示错误消息时遇到问题。 A、A1 和任何以字母开头的字母数字组合都会显示错误,但是 1a 将作为不包含字母通过。我的代码如下。
for(int s = 1; s< argc; s++)
{
if (isalpha(*argv[s]))
{
cout << "You have entered a letter, however letters are not valid arguments";
}
else etc... etc...
如有任何帮助,我们将不胜感激!
把它分解成碎片。
argv[1]
是第一个命令行参数。
(argv[2]
是第二个,以此类推...)
它有一个长度,由strlen
决定。
迭代该长度,检查每个字符:
int main(int argc, char* argv[])
{
char* Param1 = argv[1];
for(int s = 0; s< strlen(Param1); s++)
{
if (isalpha(Param1[s]))
{
cout << "You have entered a letter, however letters are not valid arguments";
因为 argv
是一个包含 C 字符串的数组,所以 argv[s]
是一个 C 字符串,而 *argv[s]
(等于 argv[s][0]
)只访问该字符串中的第一个 个字符。
如果要检查整个 char 数组中是否没有字母,则也必须循环遍历该数组:
for(int s = 1; s < argc; s++) // loops through the array of C-strings
{
for(int c = 0; c < strlen(argv[s]); c++) // loops through each C-string
{
if (isalpha(argv[s][c]))
{
cout << "You have entered a letter, however letters are not valid arguments";
// Store args in a vector of strings for ease of use (excluding first arg)
auto args = std::vector<std::string>{argv+1, argv+argc};
// Iterate through each argument
for(auto& arg : args)
{
// If any of the characters in arg (a string) are alpha
if(std::any_of(arg.begin(), arg.end(), std::isalpha))
/*...*/
else
/*...*/
}
C++ 编程新手,在参数为字母时使用 isaplha 识别和显示错误消息时遇到问题。 A、A1 和任何以字母开头的字母数字组合都会显示错误,但是 1a 将作为不包含字母通过。我的代码如下。
for(int s = 1; s< argc; s++)
{
if (isalpha(*argv[s]))
{
cout << "You have entered a letter, however letters are not valid arguments";
}
else etc... etc...
如有任何帮助,我们将不胜感激!
把它分解成碎片。
argv[1]
是第一个命令行参数。
(argv[2]
是第二个,以此类推...)
它有一个长度,由strlen
决定。
迭代该长度,检查每个字符:
int main(int argc, char* argv[])
{
char* Param1 = argv[1];
for(int s = 0; s< strlen(Param1); s++)
{
if (isalpha(Param1[s]))
{
cout << "You have entered a letter, however letters are not valid arguments";
因为 argv
是一个包含 C 字符串的数组,所以 argv[s]
是一个 C 字符串,而 *argv[s]
(等于 argv[s][0]
)只访问该字符串中的第一个 个字符。
如果要检查整个 char 数组中是否没有字母,则也必须循环遍历该数组:
for(int s = 1; s < argc; s++) // loops through the array of C-strings
{
for(int c = 0; c < strlen(argv[s]); c++) // loops through each C-string
{
if (isalpha(argv[s][c]))
{
cout << "You have entered a letter, however letters are not valid arguments";
// Store args in a vector of strings for ease of use (excluding first arg)
auto args = std::vector<std::string>{argv+1, argv+argc};
// Iterate through each argument
for(auto& arg : args)
{
// If any of the characters in arg (a string) are alpha
if(std::any_of(arg.begin(), arg.end(), std::isalpha))
/*...*/
else
/*...*/
}