我从教程中编写了这段代码来学习toupper
函数,但是在运行时,我得到了while语句的编译时错误cannot convert string type to bool
。还有另一种方法可以解决这个问题吗?
#include <iostream>
#include <cctype>
#include <stdio.h>
using namespace std;
char toupper(char numb);
int main()
{
char c;
int w = 0;
string anArray[] = {"hello world"};
while (anArray[w])
{
c = anArray[w];
putchar (toupper(c));
w++;
}
}
答案 0 :(得分:4)
只需使用实际的string
类型即可。这是C ++而不是C。
string anActualString = "hello strings";
您混淆了在C中实现字符串所需的经典字符数组以及在C ++中使用实际字符串的能力。
此外,您无法执行while (anArray[w])
因为while()测试布尔值为true或false。 anArray[w]
是一个字符串,而不是布尔值true
或false
。此外,你应该意识到anArray只是一个大小为1的字符串数组,就像你发布它一样。这样做:
int w = 0;
string aString = "hello world";
while (w < aString.length()) // continue until w reaches the length of the string
{
aString[w] = toupper(aString[w]);
w++;
}
C ++中关于字符串的巧妙之处在于,您可以在它们上使用[]
,就好像它们是常规数组一样。
答案 1 :(得分:0)
示例看起来可能想要输入
char anArray[] = { "hello world" };
或
char anArray[] = "hello world";
而不是原来的
string anArray[] = { "hello world" };
就像Adosi已经指出的那样,std :: string是一种更像c ++的方法。