如何用函数substring从字符串中减去specifeek文本
How to substract a specifiek text from a string with the function substring
为了从字符串中减去时间戳,我使用了子字符串(pos,#char)。
我的代码部分工作。我的问题是一致性。我正在从文本文件中检索一个格式为"名称时间"的字符串,示例:"Don 00:12"。
该字符串从文件中提取到HighScoreInfo1中。此外,我正在从另一个文件中提取一个字符串,即名称部分,到previous_name中。
有了这些信息,我正试图计算子字符串必须开始的位置。
int test = HighScoreInfo1.size() - (previous_name.size()+1 );
我已经测量了额外的字符,这是一个空格,即+2。1分获得空位,1分到达他需要首发的位置。
时间戳00:00有五个字符长。
int test = HighScoreInfo1.size() - (previous_name.size()+2 );
TimeToBeat = HighScoreInfo1.substr(test, 5);
TestFile << "Orginal string size " << ">>" << HighScoreInfo1.size() << " " << "size of name"<< ">>" <<previous_name.size()+2<<" " << "Position "<< test << endl;
TestFile << "Orginal string " << ">>"<<HighScoreInfo1 << " " << "Substring"<< ">>" <<TimeToBeat << endl;
这是我的输出,名称很长:
Orginal string size >>14 size of name>>10 Position >> 4
Orginal string >>Chrystel 00:09 Substring>>stel
旁注:你看不到,但在上面的例子中,"stel"后面的空格是第五个字符。
这是我的输出,简称:
Orginal string size >>9 size of name>>5 Position>> 4
Orginal string >>Don 00:09 Substring >>00:09
使用较短的名称,我可以完美地获得时间戳。
如何使其工作一致。我没有添加我的代码的其余部分,因为这部分是有效的。基本上只有子字符串部分工作不一致。
我该怎么解决这个问题?
您没有正确计算test
。它应该只比名称的大小多1,而不是HighScoreInfo1
的大小减去它(这是时间戳的长度,您知道它是5
)。您只需添加1
,而不需要添加2
,因为位置是基于零的。
int test = previous_name.size() + 1;
演示
它只适用于较短的名称,因为名称恰好有3个字符长。
int test = HighScoreInfo1.size() - (previous_name.size()+2 );
这将计算时间长度(始终为5)。
TimeToBeat = HighScoreInfo1.substr(test, 5);
这样可以得到5-10个字符。总是不管字符串的长度如何。也许你想这样做,它读取最后五个字节?
TimeToBeat = HighScoreInfo1.substr(HighScoreInfo1.size()-5);
相关文章:
- 文本文件中的单词链表
- 从命令行c++发送文本文件名
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何在c++中从文本文件中逐行读取整数
- 如何创建一个QTableWidgetItem,用长文本右对齐,左边有省略号
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- 如何根据单词在文本中出现的概率输出单词
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- C++试图读取一个文件并输出到另一个文本文件
- 如何用函数substring从字符串中减去specifeek文本