1027. Colors in Mars (20)

1.主要涉及到进制的转换,10进制到13进制

2.处理0和个位数,前面需要补0

3.可以自行输出0~168检测函数的鲁棒性

//#include<string>
//#include <iomanip>
#include<vector>
#include <algorithm>
//#include<stack>
#include<set>
#include<queue>
#include<map>
//#include<unordered_set>
//#include<unordered_map>
//#include <sstream>
//#include "func.h"
//#include <list>
#include<stdio.h>
#include<iostream>
#include<string>
#include<memory.h>
#include<limits.h>
using namespace std;
string int2str(int a)
{
	char c;
	if (a >= 0 && a <= 9)
		c = a + '0';
	else
		c = a - 10 + 'A';
	string ans = "";
	ans += c;
	return ans;
}
string dec213(int a)
{
	if (a == 0) return "00";
	string ans = "";
	while (a != 0)
	{
		ans += int2str(a % 13);
		a /= 13;
	}
	for (int i = 0; i < ans.size() / 2; i++)
		swap(ans[i], ans[ans.size() - 1 - i]);
	if (ans.size() == 1) ans = '0' + ans;
	return ans;
}
int main(void)
{
	int r, g, b;
	cin >> r >> g >> b;
	cout << "#" << dec213(r) << dec213(g) << dec213(b) << endl;
	return 0;
}


<think>我们将讨论如何给QStringList赋值。QStringList是Qt中用于处理字符串列表的类,它实际上是QList<QString>的别名。以下是几种常见的赋值方法: ###1.直接初始化可以在构造时直接使用初始化列表。```cppQStringListlist1= {"Apple","Banana","Orange"}; ```###2.使用append()或push_back()逐个添加```cppQStringList list2;list2.append("Red"); list2.append("Green"); list2.push_back("Blue");//与append相同``` ###3.使用<<运算符```cppQStringListlist3; list3 <<"Monday" <<"Tuesday" <<"Wednesday"; ```###4.使用赋值运算符(=) ```cppQStringList list4;list4= list3; //复制list3的内容``` ###5.使用QString的split()函数从字符串分割```cppQStringstr ="one,two,three,four"; QStringListlist5= str.split(','); //结果: ["one","two", "three","four"] ```###6.使用setStringList()(通常用于QStringListModel)```cppQStringListModel model; QStringListlist6;list6 <<"Cat" <<"Dog" <<"Bird"; model.setStringList(list6);``` ###7.使用循环添加```cppQStringList list7;for (int i=0;i <5; ++i){list7.append(QString::number(i));} //结果: ["0","1", "2","3", "4"]``` ###8.使用STL风格迭代器(不常用,但可能在某些场景有用) ```cppQStringList list8;QVector<QString>vec ={"A", "B","C"}; for(autoit =vec.begin(); it!= vec.end();++it) {list8 <<*it; }``` ###9.从文件读取```cppQFile file("data.txt");if (file.open(QIODevice::ReadOnly| QIODevice::Text)) {QStringList list9;QTextStreamin(&file);while(!in.atEnd()) {list9.append(in.readLine());}file.close(); }``` ###10.使用replace()修改已存在的元素```cppQStringList list10 ={"first", "second","third"}; list10.replace(1, "2nd"); //将索引1的元素替换为"2nd"``` ###注意事项: -**性能**:当添加大量元素时,使用`reserve()`预分配内存可以提高性能。- **内存管理**:QStringList使用隐式共享,复制时不会立即产生内存开销。- **编码**:注意字符串编码,Qt默认使用Unicode(UTF-16)。###完整示例: ```cpp#include <QStringList>#include <QDebug> intmain(){//方法1:初始化列表QStringListfruits ={"Apple", "Banana", "Cherry"};//方法2:使用<<运算符QStringListcolors;colors<< "Red"<< "Green"<< "Blue";//方法3:从字符串分割QStringdata ="John,Doe,35";QStringList fields= data.split(',');//打印结果qDebug()<< "Fruits:" <<fruits;qDebug()<< "Colors:"<< colors;qDebug() <<"Fields:" <<fields;return0;} ```§§相关问题§§: 1.如何遍历QStringList中的每个元素?2.QStringList如何过滤(筛选)特定条件的字符串?3.如何将QStringList拼接成一个字符串? 4.在Qt中,QStringList和QList<QString>有什么区别?</think>### 如何给QStringList赋值 `QStringList` 是 Qt 框架中用于处理字符串列表的容器类(继承自 `QList<QString>`)。以下是多种赋值方式的详细说明和示例代码: #### 1. **直接初始化赋值** ```cpp // 方式1: 使用初始化列表 (C++11及以上) QStringList list1 = {"Apple", "Banana", "Orange"}; // 方式2: 传统构造方式 QStringList list2("Apple"); list2 << "Banana" << "Orange"; ``` #### 2. **使用 << 运算符追加** ```cpp QStringList fruits; fruits << "Apple" << "Banana" << "Cherry"; // 结果: ["Apple", "Banana", "Cherry"] ``` #### 3. **使用 append()/push_back() 添加** ```cpp QStringList colors; colors.append("Red"); // 末尾添加 colors.push_back("Green"); // 同 append colors.append("Blue"); // 结果: ["Red", "Green", "Blue"] ``` #### 4. **使用 insert() 插入特定位置** ```cpp QStringList animals; animals << "Cat" << "Dog"; animals.insert(1, "Elephant"); // 在索引1位置插入 // 结果: ["Cat", "Elephant", "Dog"] ``` #### 5. **从字符串分割赋值** ```cpp QString csv = "John,Doe,35,New York"; QStringList personData = csv.split(","); // 结果: ["John", "Doe", "35", "New York"] ``` #### 6. **使用 setStringList() (适用于模型)** ```cpp // 常用于QStringListModel QStringListModel model; QStringList data = {"Item1", "Item2", "Item3"}; model.setStringList(data); ``` #### 7. **从其他容器转换** ```cpp // 从QVector转换 QVector<QString> vec = {"A", "B", "C"}; QStringList fromVec(vec.begin(), vec.end()); // 从std::list转换 std::list<QString> stdList = {"X", "Y", "Z"}; QStringList fromStdList(stdList.begin(), stdList.end()); ``` #### 8. **使用 replace() 修改元素** ```cpp QStringList planets = {"Mercury", "Venus", "Mars"}; planets.replace(2, "Earth"); // 替换索引2的元素 // 结果: ["Mercury", "Venus", "Earth"] ``` #### 9. **通过索引直接赋值** ```cpp QStringList cities; cities.resize(3); // 预分配大小 cities[0] = "Beijing"; cities[1] = "Shanghai"; cities[2] = "Shenzhen"; ``` #### 10. **从文件读取赋值** ```cpp QStringList lines; QFile file("data.txt"); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&file); while (!in.atEnd()) { lines.append(in.readLine()); // 逐行读取 } } ``` ### 关键注意事项: 1. **内存效率**:`QStringList` 使用 Qt 的隐式共享机制,赋值操作通常不会立即复制数据 2. **编码处理**:所有字符串均以 Unicode 格式存储(UTF-16) 3. **空值处理**:允许空字符串 `""`,但需注意与 null QString 的区别 4. **性能考虑**:`append()` 和 `<<` 操作平均时间复杂度为 O(1),`insert()` 为 O(n) ### 完整示例: ```cpp #include <QStringList> #include <QDebug> #include <QFile> int main() { // 1. 直接初始化 QStringList books = {"C++ Primer", "Effective C++", "Qt5 Programming"}; // 2. 追加元素 books << "Design Patterns"; // 3. 插入元素 books.insert(1, "Clean Code"); // 4.字符串分割 QString authors = "Bjarne,Scott,Meyers"; QStringList authorList = authors.split(','); // 5. 输出结果 qDebug() << "Books:"; for (const QString &book : books) { qDebug() << " - " << book; } qDebug() << "\nAuthors:"; for (const QString &author : authorList) { qDebug() << " - " << author; } return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值