【发布时间】:2016-02-25 03:15:55
【问题描述】:
我的函数必须处理看起来像 say hello y(5) 或 data |x(3)| 的字符串,并且我需要能够提取显示的整数并将其存储到一个名为 address 的单独 int 变量中。但是,某些通过的字符串不会有任何整数,对于这些,地址必须默认为 0。当字符串包含整数时,它总是在括号之间。我曾尝试使用 sscanf,但由于对 sscanf 非常陌生,我遇到了一些问题。由于某种原因,地址始终读取为 0。这是我的代码:
void process(string info)
{
int address = 0; // set to 0 in case info contains no digits
sscanf(info.c_str(), "%d", address);
.
.
.
// remainder of code makes other function calls using the address, etc
}
关于为什么 sscanf 无法找到括号之间的整数的任何想法?谢谢!
【问题讨论】:
-
hello不匹配%d。在应用%d之前,您需要找到一种方法可以跳到整数的开头。strchr函数可能是一种方式。你在address之前忘记了&。