我正在编写一个需要输入字符串,并将其分解为单个字母的程序。本质上,我需要找到一种将“string”变成["s","t","r","i","n","g"]
的方法。这些字符串也是使用字符串数据类型存储的,而不是默认的字符数组。我希望保持这种方式并避免使用char,但如果必要,我会使用它。
假设您已经有了输入的字符串:
string s("string");
vector<char> v(s.begin(), s.end());
这将使用一个字符串中的字符填充向量v
。
string a = "hello";
cout << a[1];
我希望这样解释可以说明问题。
字符串只是底层字符的序列(即std::string的char和std::wstring的wchar_t)。
因此,您可以轻松获取每个字母:
for (std::string::size_type l = 0; l < str.length(); ++l)
{
std::string::value_type c = str[l];
}
std::string
的c_str()
方法:#include <string>
using namespace std;
int main(void)
{
string text = "hello";
size_t length = text.length() + sizeof('\0');
char * letters = new char[length];
strcpy(letters, length.c_str());
for (unsigned int i = 0; i < length; ++i)
{
cout << '[' << i << "] == '" << letters[i] << "'\n";
}
return EXIT_SUCCESS;
}
std::string str = "word"
for(char i : str){
std::cout << i << std::endl;
}
char array[1000];
std::string input="i dont think love never ends";
for(size_t i=0;i<=input.length();/*or string::npos;*/i++)
{
if (input[i] != '\0')
{
array[i] = input[i];
}
else
{
break;
}
}
//to avoid noise after position input.length();
for (size_t i = input.length(); i <= 1000; i++)
{
array[i] = '\0';
}
//ie return array; or print
for (size_t i = 0; i < 100; i++)
{
std::cout << array[i] << std::endl;
}
string input ="some string for example my cat is handsome";
vector<string> split_char_to_vector(string input) {
vector<string> output;
for(size_t i=0;i<=input.length();i++) {
output.push_back(input[i]));
}
return output;
}
char array[1000];
std::string input="i dont think love never ends";
for(size_t i=0;i<=input.length();/*or string::npos;*/i++)
{
if (input[i] != '\0')
{
array[i] = input[i];
}
else
{
break;
}
}
for (size_t i = 0; i < 100; i++)
{
std::cout << array[i] << std::endl;
}
string
吗? - Potatoswatter