Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从url获取变量时遇到问题_C++_C_Algorithm_Network Programming - Fatal编程技术网

C++ 从url获取变量时遇到问题

C++ 从url获取变量时遇到问题,c++,c,algorithm,network-programming,C++,C,Algorithm,Network Programming,我在从url提取get变量并将其打印到新行时遇到了问题,如: x=y z=hello 等等,但它会打印url中看似随机的部分,而不会在文件中添加换行符。一定有某种逻辑错误,但我就是看不出来 for(i_m=0;i_m<len_m;i_m++) { if(var_m[i_m]=='&') { fwrite(var_m+offset_m, 1, amp_m, echo_out); fputc('\n',echo_out); offset_m+=amp_m;

我在从url提取get变量并将其打印到新行时遇到了问题,如:

x=y
z=hello
等等,但它会打印url中看似随机的部分,而不会在文件中添加换行符。一定有某种逻辑错误,但我就是看不出来

for(i_m=0;i_m<len_m;i_m++) {

if(var_m[i_m]=='&') {
    fwrite(var_m+offset_m, 1, amp_m, echo_out);
    fputc('\n',echo_out);
    offset_m+=amp_m;
    amp_m=0;
}

amp_m++;
}
这会将&中的每一个都更改为一个换行符,然后我可以将var_m写入文件,但由于某种原因,这会导致缓冲区溢出。

void StringExplode(std::string&str,const std::string&separator,std::vector*results){
void StringExplode(std::string &str, const std::string &separator, std::vector<string>* results){
    int found;
    found = str.find_first_of(separator);
    while(found != string::npos){
        if(found > 0){
            results->push_back(str.substr(0,found));
        }
        str = str.substr(found+1);
        found = str.find_first_of(separator);
    }
    if(str.length() > 0){
        results->push_back(str);
    }
}
int-found; found=str.find_first_of(分隔符); while(找到!=string::npos){ 如果(发现>0){ 结果->推回(str.substr(0,发现)); } str=str.substr(发现+1); found=str.find_first_of(分隔符); } 如果(str.length()>0){ 结果->推回(str); } }
您对偏移量和安培数的计算似乎是错误的。例如,简单字符串“a&b&c”-您的代码应该从该字符串输出文本:

a
b
c
但是如果你追踪代码,你会看到当你到达第一个
&
然后
偏移量m=0
amp\u m=1
时,你会打印
a
,这是可以的,但是当你到达第二个
&
时,然后
偏移量m=1
amp\u m=2
,它们实际上会打印
&b
,而且不会打印打印最后一个元素的点

使用像mysqlforums建议的简单字符串分割算法是处理此任务的常见方法,但我相信您应该能够想出一个简单的循环算法来满足您的需要。再想一想,试着在你的头脑中运行这个算法(或者用笔和纸),试着理解它是如何工作的——我相信你会明白的


如果您仍然有问题,请在此处发布一些信息,我将再次尝试提供帮助。

您可以对代码进行更多注释吗?如果您的代码不起作用,并且没有任何注释解释变量是什么/意味着什么或一般想法是什么,那么发现错误可能会非常困难。这是一个逻辑错误(算法完全不起作用)还是一个编程错误(你没有正确编码你的设计)?
StringExplode(“a,b”,“,”,0)
bang,你死定了。使用引用,而不是指针;StringExplode(“a、b”、“x”、“b”和“x”);我知道它的用途。我是说你没有空的检查,而且这样的事情是完全不必要的。如果只是将参数作为引用,不仅可以简化函数内外的使用,还可以保证不会出现任何问题。
a
b
c