CString &csVar(cslistTagName.GetNext(nPos)); 和 CString csVar(cslistTagName.GetNext(nPos)); 区别
时间: 2023-06-23 13:02:03 浏览: 40
`CString &csVar(cslistTagName.GetNext(nPos))` 是将 `cslistTagName.GetNext(nPos)` 的返回值作为引用传递给 `csVar`,也就是说,`csVar` 引用了 `cslistTagName` 中下一个元素的值,同时也会影响到 `cslistTagName` 中对应元素的值。在使用引用传递时,修改 `csVar` 的值也会修改 `cslistTagName` 对应元素的值。
而 `CString csVar(cslistTagName.GetNext(nPos))` 则是将 `cslistTagName.GetNext(nPos)` 的返回值拷贝一份到 `csVar` 中,这样就不会影响到 `cslistTagName` 中对应元素的值。在这种情况下,修改 `csVar` 的值也不会修改 `cslistTagName` 对应元素的值。
因此,如果需要对 `cslistTagName` 中的元素进行修改,可以使用第一种方式,否则可以使用第二种方式。
相关问题
SetDeviceNetworkInfos:1&1&&192.168.0.1&202.96.134.133&8.8.4.4&ea:70:38:90:e6:b7&255.255.255.0&sniper&11111& 用C++的sscanf提取每一个&中的内容,空内容也要匹配上
可以使用以下代码来实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[] = "SetDeviceNetworkInfos:1&1&&192.168.0.1&202.96.134.133&8.8.4.4&ea:70:38:90:e6:b7&255.255.255.0&sniper&11111&";
char *pch = strtok(str, "&");
while (pch != nullptr) {
cout << pch << endl;
pch = strtok(nullptr, "&");
}
return 0;
}
```
输出结果为:
```
SetDeviceNetworkInfos:1
1
192.168.0.1
202.96.134.133
8.8.4.4
ea:70:38:90:e6:b7
255.255.255.0
sniper
11111
```
这里使用了 `strtok` 函数来实现字符串的分割,将字符串中的 `&` 作为分隔符,将字符串分割成若干个子串。注意,`strtok` 函数会破坏原始字符串,所以需要将原始字符串复制到一个新的字符数组中进行操作。
cstring和string.h的区别
`cstring`和`string.h`是两个不同的头文件,但是它们的功能相同,都是提供了C语言中的字符串处理函数。
`cstring`是C++标准库中的头文件,提供了C++风格的字符串处理函数,如`std::string`等。而`string.h`是C语言标准库中的头文件,提供了C语言风格的字符串处理函数,如`strcpy()`、`strlen()`等。
因此,如果你在C++中编程,建议使用`cstring`头文件;如果你在C语言中编程,使用`string.h`头文件更为恰当。