我正在尝试将字符串分成单个字符的数组。但是,我希望用户输入字符串,为此我需要使用变量定义字符串。
我的问题是,为什么要这样做:
#include <iostream>
using namespace std;
int main() {
char arr [] = {"Giraffe"};
cout << arr[0];
return 0;
}
但这不是吗?
#include <iostream>
using namespace std;
int main() {
string word;
word = "Giraffe";
char arr [] = {word};
cout << arr[0];
return 0;
}
谢谢
答案 0 :(得分:0)
您的示例不起作用,因为您尝试将std::string
放入char
数组中。编译器会在这里抱怨,因为std::string
没有类型转换为char
。
由于您只是尝试打印字符串的第一个字符,因此只需使用std::string
,std::string::operator[]
的数组访问器重载即可:
std::string word;
word = "Giraffe";
std::cout << word[0] << std::endl;
答案 1 :(得分:0)
在第二个示例中,单词的类型为std::string
,并且没有从std::string
到类型char
的默认类型转换。
另一方面,第一个示例之所以有效,是因为它可以解释为char
的数组(但实际上只是c样式的const char *
)。
如果由于某种原因,您想将std::string
转换为c样式的char
数组,那么您可能想尝试这样的方法...
#include <iostream>
#include <string>
#include <cstring>
int main(void)
{
std::string word;
word = "Giraffe";
char* arr = new char[word.length() + 1]; // accounting for the null-terminating character
strcpy(arr, word.data());
std::cout << arr[0] << std::endl;
delete[] arr; // deallocating our heap memory
return 0;
}