Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.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
Python C++;和一个字符串连接分隔符_Python_C++ - Fatal编程技术网

Python C++;和一个字符串连接分隔符

Python C++;和一个字符串连接分隔符,python,c++,Python,C++,我一直在做一个开源项目,致力于清理它的数据库处理。在大多数地方,这项工作进展顺利,但在一个涉及自定义查询字符串操作的特定领域,代码一直很糟糕 我们需要做的基本上是在运行时使用分隔符多次连接查询的特定组件 目前的做法是设置一个计数器,循环通过一个特定的集合检查一个值,如果我们有这个值,我们会在初始查询字符串中附加“(%i,%i)”,然后设置附加状态标志,然后再附加“,(%i,%i)”,这很有效,但是代码最终会在循环中使用一个标志构建一个奇怪的if-then,这仅仅是因为我们需要在初始附加之后使用“

我一直在做一个开源项目,致力于清理它的数据库处理。在大多数地方,这项工作进展顺利,但在一个涉及自定义查询字符串操作的特定领域,代码一直很糟糕

我们需要做的基本上是在运行时使用分隔符多次连接查询的特定组件

目前的做法是设置一个计数器,循环通过一个特定的集合检查一个值,如果我们有这个值,我们会在初始查询字符串中附加“(%i,%i)”,然后设置附加状态标志,然后再附加“,(%i,%i)”,这很有效,但是代码最终会在循环中使用一个标志构建一个奇怪的if-then,这仅仅是因为我们需要在初始附加之后使用“,”分隔符


如果有一种类似于pythons“,”的连接系统,那就更好了。唯一的问题是字符串不在数组/向量中,而是在运行时找到的,并且要追加的字符串是常量


关于如何处理这个问题有什么建议吗?

这可能不是最有效的方法,但我发现我的代码经常以这种方式结束:

std::stringstream ss
for( int i = 0; i < numberOfStrings; i++ )
    ss << ( i ? "," : "" ) << GetString(i);
std::string result = ss.str();
std::stringstream ss
for(int i=0;iss从索引1而不是0开始循环怎么样?
根据您的代码改编:

char *buf = 0;
MakeAnyLenString(&buf, "(%i, %i)", CharID, TasksEnabled[0]);
TaskQuery += buf;
safe_delete_array(buf);
for(unsigned int i=1; i<TasksEnabled.size(); i++) {
    MakeAnyLenString(&buf, ",(%i, %i)", CharID, TasksEnabled[i]);
    TaskQuery += buf;
    safe_delete_array(buf);
}
char*buf=0;
MakeAnyLenString(&buf,“(%i,%i)”,CharID,TasksEnabled[0]);
TaskQuery+=buf;
安全删除数组(buf);

对于(unsigned int i=1;iSample code)请说明当前正在执行的操作。抱歉,这只是帮助我思考。“唯一的问题是字符串不在数组/向量中,而是在运行时找到的”。如果可以将它们放入任何可以迭代的对象中,那么存储在什么中(不必是内存中的集合;请参见
istream\u迭代器
了解一个简单的示例),然后您可以在其上使用类似于
boost::algorithm::join
的内容,或者非常容易地编写您自己的等效内容。要附加的字符串是常量(根据是否是第一个添加的字符串,“(%i,%i)”或“,(%i,%i)”)。是否追加是由数组中的某个值在运行时决定的。这就是为什么我不能只使用一些“,”。像python一样的联接(可迭代)构造。我没有一个iterables集合,我有一个项目集合和一个字符串常量,可以追加也可以不追加,第一个不能有“,”之前和所有其他意志。死Github链接,将努力,我们试图避免目前的流股,所以我宁愿避免这种类型的结构,如果我可以。集合而不是总是第一个元素,因为它可能必须跳过大多数元素甚至所有元素,这将更加困难!arghhOK,那么您可以创建一个
std::string
的子类,该子类具有新方法
AppendElement(std::string s)
。在内部,它保留一个附加元素数的计数器。当计数器已经非零并且调用了
AppendElement
时,它插入分隔符。@AddtheIce我们试图避免[…]stringstreams——出于什么原因?这在本例中是可行的,但这只是一个示例。我试图解决更大的问题。我们有一些结构,在应用或不应用元素之前,我们必须检查大约20个值是否符合特定的逻辑。也就是说,我正在寻找一种方法,用分隔符(过滤部分)附加一个连接的常量字符串容易做,应该是不需要考虑的事情。