C++ 添加字符串的空结尾
我有一个字符串声明为char语句[100]; 在一个循环中,我从一个txt文件中读取不同的句子,并尝试这样做:C++ 添加字符串的空结尾,c++,string,null,strtok,C++,String,Null,Strtok,我有一个字符串声明为char语句[100]; 在一个循环中,我从一个txt文件中读取不同的句子,并尝试这样做: sentence = strtok (sentencefromtxtfile," ,.-"); //seperating word by word in a loop 我能做到。但是有一个小问题。假设SentRecenFromTXTFile的长度仅为10。例如: sentencefromtxtfile=“John”->如果为空,则为5个字符。但是strtok函数无法注意到空ch。因此
sentence = strtok (sentencefromtxtfile," ,.-");
//seperating word by word in a loop
我能做到。但是有一个小问题。假设SentRecenFromTXTFile的长度仅为10。例如:
sentencefromtxtfile=“John”->如果为空,则为5个字符。但是strtok函数无法注意到空ch。因此我的句子变量如下:
John ÿ( ÕŒ•vÍ>È àı~øş( j (total 100 char)
那我该怎么解决呢?我的意思是,我可以调整句子的长度吗?因为它是fix和100。。无论如何,为我的愚蠢的英语道歉。我希望你们明白我的意思?提前感谢。在填充缓冲区之前,您可以使用
\0
字符预先填充缓冲区,方法是发出:
char sentencefromtxtfile[100] = { 0 };
这应该可以解决您的问题,因为所有未触及的字符
strtok()
都将NUL
在填充缓冲区之前,您可以通过发出以下命令预先填充\0
字符:
char sentencefromtxtfile[100] = { 0 };
这应该可以解决您的问题,因为所有保持不变的字符
strtok()
都是num
char[100]
是一个100个字符的数组,而不是一个字符串。您可以考虑使用<代码> STD::String 。<代码> char(100)< /Cord>是一个100字符的数组,不是字符串。您可以考虑使用<代码> STD::String 。
<代码> Strtok < /Cord>处理空终止符就行了。您的代码实际上是什么样子的?您不应该覆盖语句
,因为这是指向数组的唯一指针。相反,使用一个新指针,char*p=strtok(句子“…”)
strtok
可以很好地处理空终止符。您的代码实际上是什么样子的?您不应该覆盖语句
,因为这是指向数组的唯一指针。相反,使用一个新指针,char*p=strtok(句子“…”)他们没有工作。我想知道VB中是否有类似mid()的函数?你知道;mid(“你好”,1,3)=>hel。然后,也许我可以使用字符串的长度来剪切字符串……这是可以实现的,但对于这种抽象级别,您可能应该使用std::string
而不是字符数组,正如Daniel Daranas正确地建议的那样。此外,我在最初的回答中错误地使用了句子而不是句子fromtfile
(我们需要预先填充原始缓冲区,而不是由strtok()返回的指针。
)。也许这就是问题所在。它们不起作用。我想知道VB中是否有类似mid()的函数?你知道;mid(“hello”,1,3)=>hel.那么也许我可以使用字符串的长度来剪切字符串……这是可以实现的,但是对于这种抽象级别,您可能应该使用std::string
而不是字符数组,正如Daniel Daranas正确地建议的那样。此外,我在原始答案中错误地使用了句子而不是句子fromtfile
(我们需要预先填充原始缓冲区,而不是由strtok()
返回的指针)。可能这就是问题所在。