从字符数组中提取字符串
Extracting string from character array
我尝试过memcpy/strncpy/std::copy,但它们似乎都不起作用,导致程序崩溃。
这是我需要做的:
我正在尝试解析用户输入的参数。"message -add 0xAE"
我需要将0xAE部分获取为整数,这里有一些伪代码_input将保存完整的字符串"message -add 0xAE"
if(strstr(_input,"message -add 0x")){
char* _temp;
std::copy(strlen("message -add 0x"),strlen("message -add 0x")+(strlen(_input)-strlen("message -add 0x")),_temp);
/* or */
memcpy(_temp,_input+strlen("message -add 0x"),strlen(_input)-strlen("message -add 0x"));
int _value = (int)_temp;
CLog->out("nn %d",_value);
}
编辑:谢谢Alan!if(strstr(_input,"message -add 0x")){
char* _temp = new char[strlen(_input)-strlen("message -add 0x")];
memcpy(_temp,_input+strlen("message -add 0x"),strlen(_input)-strlen("message -add 0x"));
int _value = atoi(_temp);
CLog->out("nn %d",_value);
}
您在找:
int value = 0;
char c;
for(int i = strlen("message -add 0x"); c = *(_input + i); i++) {
value <<= 4;
if(c > '0' && c <= '9') {
// A digit
value += c - '0';
} else if(c >= 'A' && c < 'G') {
// Hexadecimal
value += 10 + c - 'A';
}
}
?
如果您想使用c++,那么请避开各种C函数和所有讨厌的内存管理。我推荐阅读加速c++。它确实是一本学习c++和实际使用c++的顶级书籍。下面是不使用C字符串解析例程的另一个解决方案:
#include <iomanip>
#include <iostream>
#include <sstream>
#include <string>
int
main()
{
std::string const TARGET("message -add 0x");
char const _input[] = "message -add 0xAE23";
std::string input(_input);
std::string::size_type offset = input.find(TARGET);
if (offset != std::string::npos) {
std::istringstream iss(input);
iss.seekg(offset + TARGET.length());
unsigned long value;
iss >> std::hex >> value;
std::cout << "VALUE<" << value << ">" << std::endl;
}
return 0;
}
相关文章:
- 清除输入缓冲区后未提取字符串流
- 提取字符串中的随机单词
- 提取C++字符串
- 如何提取字符串中的特定值
- 如何提取字符串中的整数?
- 正则表达式:从模式字符串 1.string2'string3 中提取字符串,其中字符串 1 可以包含 '." 字符
- C - 从逗号分隔的浮点线提取字符串
- 如何使用正则表达式提取字符串的不匹配部分
- 处理从 std::istream 中提取字符串的空字符串大小写
- 可视化从文本C++中提取字符串数据
- 如何在C++中有效地提取字符串模式
- 分析文本文件以提取字符串
- C++:从两个符号之间提取字符串
- 提取字符串的一部分并将部分放入字符数组和另一个字符串变量C++
- 如何在c++中提取字符串的一部分
- 使用getline(),然后从用户输入中提取字符串(使用c++)
- 尝试从文本文件中读取列表,然后搜索文本文件,并在c++中提取字符串
- 试图从c++文本文件的单行中提取字符串的一部分
- 从字符数组中提取字符串
- 从JavaScript代码中提取字符串