小编Mik*_*ike的帖子

C++ stringstream >> int返回零

我正在写一个函数来返回一个数字的反转,即它转换int(1234)int(4321).这就是我目前所拥有的:

#include <iostream>
#include <cstdlib>
#include <string>
#include <sstream>

using namespace std;


int reverse(int num) {
  stringstream ss (stringstream::in | stringstream::out);
  string initial; 
  int reversed;

  // read the number in to a string stream
  ss << num;
  initial = ss.str();

  // flush the stringstream
  ss.str("");
  for(unsigned int i(0); i <= initial.size(); i++) {
    ss << initial[initial.size() - i];
  }
  ss >> reversed;

  return reversed;
}


int main(int argc, const char *argv[])
{
  int test = 9871; …
Run Code Online (Sandbox Code Playgroud)

c++ integer stringstream

4
推荐指数
1
解决办法
1508
查看次数

如何在Linux中将linux syslog映射到printf

我在桌面上运行了一个linux应用程序,我想将syslog()调用重定向到printf()调用.

注:希望更换电话,只是重定向

所以我写了一些代码来做到这一点:

#ifndef EMBED
#define syslog(level, stuff) printf("SYSLOG: %s\n", stuff)
#endif
Run Code Online (Sandbox Code Playgroud)

在我使用它的一个文件中工作得很好.我将其移动到一个新文件并收到错误:

error: macro "syslog" passed 3 arguments, but takes just 2
Run Code Online (Sandbox Code Playgroud)

我知道错误是因为新文件中的调用是混合的,有些是使用2个参数连接到syslog,有些是使用3.我也知道我需要以某种方式通过变量参数列表重定向这个,但我该怎么做?我还没有工作呢......

据我了解,syslog()和printf()应该是:

void syslog(int priority, const char *format, ...)
int printf(const char *format, ...)
Run Code Online (Sandbox Code Playgroud)

所以我尝试过:

#define ERR 3
#ifndef EMBED         // This is not defined in my env, btw
#define syslog(pri, fmt, ...) printf(fmt, ...)
#endif
...
void main() {
...
syslog(ERR, "test");
Run Code Online (Sandbox Code Playgroud)

但是这给出了错误:

error: expected expression before ‘...’ token
Run Code Online (Sandbox Code Playgroud)

关于如何使用这个宏的建议?

c linux macros syslog

4
推荐指数
1
解决办法
6587
查看次数

仅使用一个循环打印图案

我用一个循环打印了这个模式:

*
**
***
****
*****

String s = "";
for (i = 1; i <= n; ++i) {
    s += "*";
    System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)

现在我想要如何仅使用一个循环打印以下模式.

1)
    *
   * *
  * * *
 * * * *
* * * * *

2)
  * * * * * 
   * * * *
    * * *
     * *
      *

3)
   1 2 3 4 5
   1 2 3 4
   1 2 3 
   1 2
   1
Run Code Online (Sandbox Code Playgroud)

和其他类似的模式只使用一个循环,我已经完成了所有使用多个循环.

java loops design-patterns for-loop

4
推荐指数
1
解决办法
2万
查看次数

从C++修改python列表

我有一个Python列表,我可以获取它的指针,并将此指针地址传递给C++进行处理

MyPointer = TheList.as_pointer()
Run Code Online (Sandbox Code Playgroud)

现在我用ctypes将这个地址传递给C++

在C++中,我可以执行以下操作:

*(float*) MyPointer = 2.0f; //for example
Run Code Online (Sandbox Code Playgroud)

并且Python值会立即更新,现在的问题是:如何扩展或删除一些值(比如直接从C++修改列表),因为我感觉这些数据是std::vector如何做的push_back等等以快速方式调整大小(在Python中迭代几乎是缓慢的)

c++ python ctypes

4
推荐指数
1
解决办法
747
查看次数

动态编程问题

我正在寻找关于动态编程问题的一些指示.我找不到任何有关如何解决此类问题的相关信息.我知道如何使用动态编程解决的唯一问题是当我有两个序列并创建这些序列的矩阵时.但我不知道如何将其应用于以下问题......

如果我有一个集合A = {7,11,33,71,111}和一个数字B.那么作为A的子集的C包含来自A的元素,它构建了和B.

例:

A = {7,11,33,71,111}
If B = 18, then C = {7,11} (because 7+11 = 18)

If B = 3, then there is no solution
Run Code Online (Sandbox Code Playgroud)

感谢这里的任何帮助,我只是不知道在解决这些问题时如何思考.我也找不到任何一般方法,只有基因序列的一些例子和类似的东西.

algorithm dynamic-programming sequence

3
推荐指数
1
解决办法
4159
查看次数

是否可以将内核消息从特定进程传递到文件

由于这是一个Linux问题,我会注意到我正在使用OpenSUSE 12.1

我正在运行一个内核模块,基本上它是一个CAN总线模拟器,它会printk()在"总线"上有活动时打印消息.

我正在跟踪消息sudo cat /proc/kmsg,但是当我开始在"总线"上放置其他"设备"时,kmsg流量被大大压缩,很难找到我的消息.

无论如何将"printk"消息从一个特定进程传递到文件?

编辑 我现在看到,如果我在调试消息中添加特定标签,有可能吗?还有其他方法吗?

linux logging pipe linux-kernel

3
推荐指数
1
解决办法
2714
查看次数

以100波特率处理串口

我想知道是否可以从100波特率的串口读取.根据termio.h没有规定将100设置为波特率.我在Linux工作.另一端的通信设备以100波特率发送数据并且是固定的.我想知道我的波特率是否设置为110,它能保证我收到的数据是否正确?或者有什么解决方案吗?

请指导.

c linux serial-port baud-rate

3
推荐指数
1
解决办法
1413
查看次数

为什么必须在套接字函数中传递sizeof?

我期待到用C socket编程,我很好奇,为什么你要传递一个参数,并在样功能的该参数的长度bind()connect()?为什么不在sizeof()函数内部使用?

c sockets

3
推荐指数
1
解决办法
159
查看次数

反正有没有检查str函数的成功?

我正在查看strcpy()strcat()上的手册.似乎没有办法评估函数调用的"成功".(即返回值永远不会NULL),这是正确的吗?

假设您遵循输入这些函数的规则,输出有效吗?只是想确保我在这里没有遗漏任何东西......

c string strcpy strcat

3
推荐指数
1
解决办法
357
查看次数

sscanf出人意料的结果

#include<stdio.h>
#include<string.h>

int main()
{
   char buffer[32];
   char c;
   int i;
   printf("input: ");
   fgets(buffer, 32, stdin);
   printf("items filled: %d\n", sscanf("%c%d\n", &c, &i));
   printf("%c%d\n", c, i);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

当键入一个字符后跟一个数字"f7"时,我希望"f"进入变量c,而"7"进入变量i.出于某种原因,sscanf()无法填充两者,我得到了他们的初始垃圾值.我究竟做错了什么?

c scanf

3
推荐指数
1
解决办法
212
查看次数