Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将字符串拆分为字符数组_C++_String_Split - Fatal编程技术网

C++ 将字符串拆分为字符数组

C++ 将字符串拆分为字符数组,c++,string,split,C++,String,Split,我正在编写一个程序,需要输入一个字符串,然后将其分解为单个字母。基本上,我需要帮助找到一种将“字符串”转换为[“s”、“t”、“r”、“I”、“n”、“g”]的方法。默认情况下,字符串也使用字符串数据类型存储,而不仅仅是字符数组。我希望保持这种方式,避免使用char,但在必要时将使用它。string a=“hello”; string a = "hello"; cout << a[1]; cout字符串只是底层字符的一个序列(即,char表示std::string,wchar\t

我正在编写一个程序,需要输入一个字符串,然后将其分解为单个字母。基本上,我需要帮助找到一种将“字符串”转换为
[“s”、“t”、“r”、“I”、“n”、“g”]
的方法。默认情况下,字符串也使用字符串数据类型存储,而不仅仅是字符数组。我希望保持这种方式,避免使用char,但在必要时将使用它。

string a=“hello”;
string a = "hello"; 
cout << a[1];

cout字符串只是底层字符的一个序列(即,char表示std::string,wchar\t表示std::wstring)

因此,您很容易收到每个字母:

for (std::string::size_type l = 0; l < str.length(); ++l)
{
    std::string::value_type c = str[l];
}
for(std::string::size_type l=0;l
假设您已经输入了字符串:

string s("string");
vector<char> v(s.begin(), s.end());
字符串s(“字符串”);
向量v(s.begin(),s.end());
这将用字符串中的字符填充向量
v

尝试使用
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;
    }
#包括
使用名称空间std;
内部主(空)
{
string text=“你好”;
size_t length=text.length()+sizeof('\0');
字符*字母=新字符[长度];
strcpy(字母,长度.c_str());
for(无符号整数i=0;istring input=“一些字符串,例如我的猫很帅”;
向量拆分字符到向量(字符串输入){
矢量输出;

对于(size_t i=0;i如果要将拆分字符串转换为字符,则首先遍历字符串,并将字符串的每个字符写入字符数组ie的第i个位置

 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;
    }
  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;
    }
char数组[1000];
std::string input=“我不认为爱永远不会结束”;

for(size_t i=0;i可以使用for循环来迭代字符串的字符

    std::string str = "word"
    for(char i : str){
        std::cout << i << std::endl;
    }
std::string str=“word”
for(字符i:str){

std::cout You't::good::scare::him::with::all::that::stuff.imo使用
int
或更好的是,
size\u t
将在所有现有平台上都能工作,而且更加清晰。在拆分字母后,您需要对字母做些什么吗?也就是说,您需要将字母放入某种数据结构中,而不是
字符串e> ?这是一个愚蠢的问题,字符串是一个字符数组。不需要将sizeof('\0')添加到length,因为它可能大于1,然后分配的数组的大小将大于需要的大小。添加1而不是sizeof('\0')更好。George,sizeof(char)始终为1。不正确!sizeof(char)并非总是1。我使用的DSP芯片中,所有内容都至少是32位,char,short,int--sizeof(char)==sizeof(short)==sizeof(int)。C标准只是说sizeof(char)不,@Ryan,对不起,你错了。第5.3.3节“sizeof”说明:“sizeof(char)、sizeof(有符号的char)和sizeof(无符号的char)是1”。字符是一个字节,但两者都不一定是八位字节(8位)。这与C相同。这来自C++0x的n3000草稿,但多年来一直是这样。啊,我得到了纠正。我真正的观点是不要假设1==8位,你清楚地说明了这一点。DSP芯片的有趣之处是1==sizeof(char)==sizeof(short)==sizeof(int)当我发现其中1==32位时,这让我很惊讶。我不想这样,因为我不是在这里提供教程,只是回答。作为记录,你也可以这样做:cout@AshleysBrain:或者cout是我见过的最好的解决方案!非常感谢。添加细节也可以让答案更容易理解。欢迎使用堆栈溢出!而这段代码可能会回答问题问题,最好包含一些上下文,解释它是如何工作的以及何时使用它。从长远来看,纯代码的答案往往不太有用。有关更多信息,请参阅。